package com.ceair.service;

import com.ceair.entity.SysAuthority;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ceair.entity.request.authority.AuthorityInOrUpReq;
import com.ceair.entity.request.authority.DeleteAuthorityReq;
import com.ceair.entity.vo.authority.SysAuthorityVO;
import com.ceair.entity.vo.role.RoleAuthorityVO;

import java.util.List;

/**
 * <p>
 * 系统菜单表 服务类
 * </p>
 *
 * @author wangbaohai
 * @since 2025-03-03
 */
public interface ISysAuthorityService extends IService<SysAuthority> {

    /**
     * 查询所有权限信息
     *
     * 该方法用于获取系统中所有的权限信息，返回一个包含所有权限对象的列表
     * 主要用于权限管理、权限展示等场景
     *
     * @return 包含所有权限对象的列表如果数据库中没有权限信息，返回空列表
     */
    List<RoleAuthorityVO> queryAllAuthority();

    /**
     * 保存权限信息
     *
     * 此方法用于接收一个权限请求对象，并将其保存到系统中权限请求对象包含了需要保存的权限信息，
     * 包括权限的名称、描述以及相关的资源信息等通过此方法，可以将新的权限信息添加到系统中，或者
     * 更新现有的权限信息
     *
     * @param authorityInOrUpReq 权限请求对象，包含需要保存的权限信息
     * @return 返回一个系统权限VO对象，包含了保存后的权限信息
     */
    SysAuthorityVO save(AuthorityInOrUpReq authorityInOrUpReq);

    /**
     * 删除权限信息
     *
     * 该方法用于删除系统中的权限信息它接受一个DeleteAuthorityReq对象作为参数，
     * 该对象包含了删除权限所需的条件根据这些条件，方法将尝试从数据库或权限系统中
     * 移除相应的权限信息
     *
     * @param deleteAuthorityReq 包含了删除权限所需条件的请求对象
     * @return 返回一个Boolean值，表示删除操作是否成功如果删除成功，返回true；否则，返回false
     */
    Boolean delete(DeleteAuthorityReq deleteAuthorityReq);
}
